package com.example.algorithm.no0005.solution;

import com.example.algorithm.no0005.Solution;

/**
 * @Description 解答-最长回文子串-暴力解法
 * 暴力求解，列举所有的子串，判断是否为回文串，保存最长的回文串
 * 时间复杂度：两层 for 循环 O(n²)，for 循环里边判断是否为回文 O(n)），所以时间复杂度为 O(n³)。
 * 空间复杂度：O(1)，常数个变量。
 * @ClassName MapSolution
 * @Author Administrator
 * @Date 2020/5/20 10:26
 * @Version 1.0.0
 */
public class SolutionImpl implements Solution {
    @Override
    public String longestPalindrome(String s) {
        String ans = "";
        int max = 0;
        int len = s.length();
        for (int i = 0; i < len; i++)
            for (int j = i + 1; j <= len; j++) {
                String test = s.substring(i, j);
                if (isPalindromic(test) && test.length() > max) {
                    ans = s.substring(i, j);
                    max = Math.max(max, ans.length());
                }
            }
        return ans;
    }

    public boolean isPalindromic(String s) {
        int len = s.length();
        for (int i = 0; i < len / 2; i++) {
            if (s.charAt(i) != s.charAt(len - i - 1)) {
                return false;
            }
        }
        return true;
    }
}
